Scroll to navigation

LOCALE(7) Руководство программиста Linux LOCALE(7)

ИМЯ

locale - описание поддержки нескольких языков

ОБЗОР

#include <locale.h>

ОПИСАНИЕ

Локаль — это сочетание языковых и культурных аспектов. Они включают в себя: язык сообщений, различные наборы символов, лексикографические соглашения и т.п. Программа должна определять локализацию и действовать согласно её установкам в целях достижения взаимосвязи различных культур.

Файл <locale.h> описывает типы данных, функции и макросы, необходимые для выполнения этой задачи.

В нём описаны функции: setlocale(3), устанавливающая текущую локаль и localeconv(3), которая возвращает информацию о форматировании чисел.

Существуют различные категории локализации, которые программа может использовать; они описаны как макросы. Используя их в качестве первого аргумента функции setlocale(3), можно установить значение значение категории в желаемую локаль:

Эта категория изменяет поведение функций strcoll(3) и strxfrm(3), которые используются для сравнения строк с учётом местного алфавита. Например, немецкая эсцет (sharp s) рассматривается как "ss".
Эта категория влияет на поведение функций обработки и классификации символов, таких как: isupper(3) и toupper(3), а также многобайтных символьных функций, таких как: mblen(3) или wctomb(3).
влияет на информацию, возвращаемую функцией localeconv(3) , которая описывает способ отображения числа, например, необходимо ли использовать в качестве десятичного разделителя точку или запятую. Эта информация используется в функции strfmon(3).
изменяет язык отображаемых сообщений и указывает, как должны выглядеть положительный и отрицательный ответы. Библиотека GNU C содержит функции gettext(3), ngettext(3) и rpmatch(3) для более удобного использования этой информации. Семейство функций GNU gettext так же учитывает переменную окружения LANGUAGE (содержащую через двоеточие список локалей), если указана допустимая категория отличная от "C".
изменяет информацию, которая используется в семействе функций printf(3) и scanf(3), если необходимо использовать настройки локали. Эта информация может быть также прочитана при помощи функции localeconv(3).
влияет на поведение функции strftime(3), которая используется для отображения текущего времени в местном формате; например, большая часть Европы использует 24-часовой формат, тогда как в США используют 12-часовой.
Все вышеперечисленное.

Если второй аргумент функции setlocale(3) равен пустой строке "", то локаль по умолчанию будет определяться следующим образом:

1.
Если существует непустая переменная окружения LC_ALL, то используется её значение.
2.
Если существует переменная окружения с именем одной из вышеописанных категорий и она непустая, то её значение присваивается этой категории.
3.
Если существует непустая переменная окружения LANG, то используется её значение.

Информация о локальном форматировании чисел доступна в структуре struct lconv, возвращаемой функцией localeconv(3) , которая описана следующим образом:

struct lconv {

/* Информация о числах (не связанная с деньгами) */
char *decimal_point; /* Символ разделителя дробной части */
char *thousands_sep; /* Разделитель групп цифр слева от
символа разделителя дробной части */
char *grouping; /* Каждый элемент является номером цифры в группе;
элементы c большими номерами находятся левее.
Элемент с значением CHAR_MAX означает, что
группировка завершена. Элемент со значением 0
указывает, что предыдущий элемент используется
для всех групп, находящихся левее. */
/* В оставшихся полях указывается информация о денежных
величинах */
char *int_curr_symbol; /* Первые три символа являются символом
валюты, согласно ISO 4217. Четвёртый
символ является разделителем. Пятый
символ равен '\0'. */
char *currency_symbol; /* Местный символ валюты */
char *mon_decimal_point; /* Символ разделителя дробной части */
char *mon_thousands_sep; /* Как thousands_sep */
char *mon_grouping; /* Как grouping */
char *positive_sign; /* Знак положительных значений */
char *negative_sign; /* Знак отрицательных значений */
char int_frac_digits; /* Представление дробных чисел в
международном формате */
char frac_digits; /* Представление дробных чисел в локальном
формате */
char p_cs_precedes; /* 1, если символ валюты указывается перед
положительным значение, 0 — если
следует за ним. */
char p_sep_by_space; /* 1, если пробел отделяет символ валюты
от положительного значения */
char n_cs_precedes; /* 1, если символ валюты предшествует
отрицательному значению,
0, если следует за ним */
char n_sep_by_space; /* 1, если пробел отделяет символ валюты
от отрицательного значения */
/* Позиция положительного или отрицательного знака:
0 Скобки окружают количество и символ валюты.
1 Знак предшествует количеству и символу валюты.
2 Знак следует за количеством и символом валюты.
3 Знак непосредственно предшествует символу валюты.
4 Знак непосредственно следует за символом валюты. */
char p_sign_posn;
char n_sign_posn; };

СООТВЕТСТВИЕ СТАНДАРТАМ

POSIX.1-2001.

Функции GNU gettext определены в LI18NUX2000.

СМОТРИТЕ ТАКЖЕ

locale(1), localedef(1), gettext(3), localeconv(3), ngettext(3), nl_langinfo(3), rpmatch(3), setlocale(3), strcoll(3), strfmon(3), strftime(3), strxfrm(3)

2008-12-05 Linux